#include <unistd.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <stdlib.h>
#include <string.h>
#include <fcntl.h>

int main(int argc,char* argv[])
{
    //打开
    int fd = open(argv[1],O_WRONLY);
    if (-1==fd)
    {
        //删除管道文件
        printf("打开管道文件失败%m\n");
        unlink(argv[1]);
        return -1;
    }

    //读 c
    char filename[256];
    printf("请发送要发送的文件名\n");
    scanf("%s",filename);
    write(fd,filename,sizeof(filename));
    //获取文件大小并发送文件大小
    struct stat* fs = {0};
    stat(filename,fs);
    write(fd,&(fs->st_size),sizeof(fs->st_size));

    char temp[1024];
    int srcfd = open(filename,O_RDWR);
    if (srcfd==-1)
    {
        printf("打开文件失败]\n");
        close(fd);
        unlink(argv[1]);
        return -1;
    }
    printf("打开文件成功\n");
    while (1) //循环读取文件 并发送文件内容
    {
        int r  =read(srcfd,temp,sizeof(temp));
        printf("读取%d\n",r);
        if (r >0)
        {
            write(fd,temp,r);
        }else
        {
            break;//没读到就直接结束
        }
    }


    close(srcfd);
    close(fd);

    return 0;
}